nexus\api\event/
extras.rs

1//! [Unofficial Extras](https://github.com/Krappa322/arcdps_unofficial_extras_releases) bridge events.
2
3use super::Event;
4use arcdps::{
5    extras::{
6        keybinds::RawKeybindChange, message::SquadMessage, user::to_user_info_iter, UserInfo,
7        UserInfoIter,
8    },
9    Language,
10};
11
12/// Unofficial Extras squad update event.
13pub const EXTRAS_SQUAD_UPDATE: Event<SquadUpdate> =
14    unsafe { Event::new("EV_UNOFFICIAL_EXTRAS_SQUAD_UPDATE") };
15
16/// Unofficial Extras squad update payload.
17#[derive(Debug, Clone)]
18#[repr(C)]
19pub struct SquadUpdate {
20    pub users: *const UserInfo,
21    pub count: u64,
22}
23
24impl SquadUpdate {
25    #[inline]
26    pub fn iter(&self) -> UserInfoIter<'_> {
27        unsafe { to_user_info_iter(self.users, self.count) }
28    }
29}
30
31/// Unofficial Extras language changed event.
32pub const LANGUAGE_CHANGED: Event<Language> =
33    unsafe { Event::new("EV_UNOFFICIAL_EXTRAS_LANGUAGE_CHANGED") };
34
35/// Unofficial Extras keybind changed event.
36pub const KEYBIND_CHANGED: Event<RawKeybindChange> =
37    unsafe { Event::new("EV_UNOFFICIAL_EXTRAS_KEYBIND_CHANGED") };
38
39/// Unofficial Extras chat message event.
40pub const CHAT_MESSAGE: Event<SquadMessage> =
41    unsafe { Event::new("EV_UNOFFICIAL_EXTRAS_CHAT_MESSAGE") };